home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmiSoft / Disk / moni / FileX-src.lha / FileX-src / misc.c < prev    next >
C/C++ Source or Header  |  1994-04-28  |  7KB  |  232 lines

  1. #include "allprotos.h"
  2. #include "FileXStructs.h"
  3. #include "FileXStrings.h"
  4.  
  5. static char *DisplayStrings[4] =
  6. {
  7.     MSG_GADGET_MISC_HEX,
  8.     MSG_GADGET_MISC_ASCII,
  9.     MSG_GADGET_MISC_HEXANDASCII,
  10.     0
  11. };
  12.  
  13. static char *SpaceStrings[5] =
  14. {
  15.     MSG_GADGET_MISC_BYTE,
  16.     MSG_GADGET_MISC_WORD,
  17.     MSG_GADGET_MISC_LONG,
  18.     MSG_GADGET_MISC_NO,
  19.     0
  20. };
  21.  
  22. enum {
  23.     GD_MISC_USEASL,
  24.     GD_MISC_OVERWRITE,
  25.     GD_MISC_ALTSPRUNGWEITE,
  26.     GD_MISC_SCROLLRAND,
  27.     GD_MISC_MAXUNDOLEVEL,
  28.     GD_MISC_MAXUNDOMEM,
  29.     GD_MISC_CLIPBOARDUNIT,
  30.     GD_MISC_PROGRAMPRIO,
  31.     GD_MISC_COMMANDSHELLWINDOW,
  32.     GD_MISC_COMMANDWINDOW,
  33.     GD_MISC_DISPLAY,
  34.     GD_MISC_SPACE,
  35.     GD_MISC_OK,
  36.     GD_MISC_CANCEL
  37. };
  38.  
  39. static struct MyNewGadget MiscNewGadgets[] =
  40. {
  41.     CHECKBOX_KIND, 0, 0, 0, MSG_GADGET_MISC_USEASLLIBRARY, 0, 0, 0, 0, 0,
  42.     CHECKBOX_KIND, 0, 0, 0, MSG_GADGET_MISC_OVERWRITE, 0, 0, 0, 0, 0,
  43.     SLIDER_KIND, 0/*GP_NEWCOLUMN*/, 0, 0, MSG_GADGET_MISC_ALTJUMP, 0, 30, 0, 7, 0,
  44.     SLIDER_KIND, 0, 0, 0, MSG_GADGET_MISC_SCROLLBORDER, 0, 99, 0, 7, 0,
  45.     SLIDER_KIND, 0, 0, 0, MSG_GADGET_MISC_MAXUNDOLEVEL, 2, 9999, 0, 7, 0,
  46.     SLIDER_KIND, 0, 0, 0, MSG_GADGET_MISC_MAXUNDOMEM, 10, 9999, 0, 7, 0,
  47.     SLIDER_KIND, 0, 0, 0, MSG_GADGET_MISC_CLIPBOARDUNIT, 0, 255, 0, 7, 0,
  48.     SLIDER_KIND, 0, 0, 0, MSG_GADGET_MISC_PROGRAMPRIORITY, -128, 127, 0, 7, 0,
  49.     STRING_KIND, 0, 0, 0, MSG_GADGET_MISC_COMMANDSHELLWINDOW, 0, 256, 0, 0, 30,
  50.     STRING_KIND, 0, 0, 0, MSG_GADGET_MISC_COMMANDWINDOW, 0, 256, 0, 0, 30,
  51.     CYCLE_KIND, 0, 0, 0, MSG_GADGET_MISC_DISPLAY, 0, 0, 0, 0, 0,
  52.     CYCLE_KIND, 0, 0, 0, MSG_GADGET_MISC_SPACE, 0, 0, 0, 0, 0,
  53.  
  54.     BUTTON_KIND, GP_LEFTBOTTOM, 0, 0, MSG_GADGET_OK, 0, 0, 0, 0, 0,
  55.     BUTTON_KIND, GP_RIGHTBOTTOM, 0, 0, MSG_GADGET_CANCEL, 0, 0, 0, 0, 0,
  56.     0
  57. };
  58.  
  59. static struct WindowData MiscWD =
  60. {
  61.     NULL,    NULL,    FALSE, NULL, NULL,
  62.     0,0,
  63.     &MiscNewGadgets[ 0 ], 14
  64. };
  65.  
  66. static void DoMiscWndMsg( void )
  67. {
  68.     struct IntuiMessage    *m, Msg;
  69.     struct Gadget *gad;
  70.  
  71.     BOOL wie = -1;    /* 0 = Cancel, 1 = Ok, -1 = Window bleibt offen */
  72.  
  73. /*    kprintf("DoMiscWnd: %8lx %8lx\n", MiscWD.Wnd, MiscWD.Wnd->UserPort );*/
  74.  
  75.     while( m = GT_GetIMsg( MiscWD.Wnd->UserPort ))
  76.     {
  77.         CopyMem((char *)m, (char *)&Msg, (long)sizeof(struct IntuiMessage));
  78.  
  79.         GT_ReplyIMsg(m);
  80.  
  81.         KeySelect(MiscWD.Gadgets, &Msg);
  82.  
  83.         gad = (struct Gadget *) Msg.IAddress;
  84.  
  85.         switch( Msg.Class )
  86.         {
  87. /*            case    IDCMP_REFRESHWINDOW:
  88.                 GT_BeginRefresh( MiscWD.Wnd );
  89.                 GT_EndRefresh( MiscWD.Wnd, TRUE );
  90.                 break;*/
  91.  
  92.             case    IDCMP_VANILLAKEY:
  93.                 if( Msg.Code == 13)
  94.                 {
  95.                     wie = 1;
  96.                 }
  97.                 break;
  98.  
  99.             case    IDCMP_CLOSEWINDOW:
  100.                 wie = 0;
  101.                 break;
  102.  
  103.             case IDCMP_MOUSEMOVE:
  104.                 ((struct MyNewGadget *)gad->UserData)->CurrentValue = Msg.Code;
  105.                 break;
  106.  
  107.             case    IDCMP_GADGETUP:
  108.                 switch(gad->GadgetID)
  109.                 {
  110.                     case GD_MISC_OK:
  111.                         wie = 1;
  112.                         break;
  113.                     case GD_MISC_CANCEL:
  114.                         wie = 0;
  115.                         break;
  116.                     case GD_MISC_OVERWRITE:
  117.                     case GD_MISC_USEASL:
  118.                         ((struct MyNewGadget *)gad->UserData)->CurrentValue = !((struct MyNewGadget *)gad->UserData)->CurrentValue;
  119.                         break;
  120.                     case GD_MISC_DISPLAY:
  121.                     case GD_MISC_SPACE:
  122.                         ((struct MyNewGadget *)gad->UserData)->CurrentValue = Msg.Code;
  123.                         break;
  124.                 }
  125.                 break;
  126.         }
  127.     }
  128.  
  129.     if( wie != -1)
  130.     {
  131.         BOOL RedrawDisplay = FALSE;
  132.  
  133.         if( wie == 1 )
  134.         {
  135.             altsprungweite = MiscNewGadgets[ GD_MISC_ALTSPRUNGWEITE ].CurrentValue;
  136.  
  137.             SetScrollRand(MiscNewGadgets[ GD_MISC_SCROLLRAND ].CurrentValue);
  138.             SetUndoLevel(MiscNewGadgets[ GD_MISC_MAXUNDOLEVEL ].CurrentValue);
  139.             SetMaxUndoMemSize(MiscNewGadgets[ GD_MISC_MAXUNDOMEM ].CurrentValue);
  140.             SetTaskPri(FindTask(NULL), taskpri = MiscNewGadgets[ GD_MISC_PROGRAMPRIO ].CurrentValue);
  141.             SetRequester((MiscWD.Gadgets[ GD_MISC_USEASL ]->Flags&SELECTED)?TRUE:FALSE);
  142.             SetClipboardUnit(MiscNewGadgets[ GD_MISC_CLIPBOARDUNIT ].CurrentValue);
  143.             SetCommandWindow(GetString(MiscWD.Gadgets[ GD_MISC_COMMANDWINDOW ]));
  144.             SetCommandShellWindow(GetString(MiscWD.Gadgets[ GD_MISC_COMMANDSHELLWINDOW ]));
  145.             if(MiscNewGadgets[ GD_MISC_OVERWRITE ].CurrentValue)
  146.                 mainflags |= MF_OVERWRITE;
  147.             else
  148.                 mainflags &= ~MF_OVERWRITE;
  149.     
  150.             if( AktuDD->DisplayForm != MiscNewGadgets[ GD_MISC_DISPLAY ].CurrentValue + 1 )
  151.             {
  152.                 RedrawDisplay = TRUE;
  153.                 AktuDD->DisplayForm = MiscNewGadgets[ GD_MISC_DISPLAY ].CurrentValue + 1;
  154.                 
  155.                 if(( AktuDD->DisplayForm & DF_HEXASCII ) != DF_HEXASCII )
  156.                 {
  157.                     if( AktuDD->DisplayForm & DF_HEX )
  158.                         AktuDD->Flags |= DD_HEX;
  159.                     else
  160.                         AktuDD->Flags &= ~DD_HEX;
  161.                 }
  162.             }
  163.             
  164.             if( 3 == MiscNewGadgets[ GD_MISC_SPACE ].CurrentValue )
  165.                 MiscNewGadgets[ GD_MISC_SPACE ].CurrentValue = 8;
  166.     
  167.             if( AktuDD->DisplaySpaces != MiscNewGadgets[ GD_MISC_SPACE ].CurrentValue )
  168.             {
  169.                 AktuDD->DisplaySpaces = MiscNewGadgets[ GD_MISC_SPACE ].CurrentValue;
  170.                 RedrawDisplay = TRUE;
  171.             }
  172.  
  173.             DefaultDisplayForm = AktuDD->DisplayForm;
  174.             DefaultDisplaySpaces = AktuDD->DisplaySpaces;
  175.         }
  176.             
  177.         MyRemoveSignal( 1L << MiscWD.Wnd->UserPort->mp_SigBit );
  178.         NewCloseAWindow( &MiscWD );
  179.     
  180.         if( wie == 1 )
  181.         {
  182.             if( RedrawDisplay )
  183.                 MakeDisplay( AktuDI );
  184.         }
  185.     }
  186. }
  187.  
  188.  
  189. BOOL OpenMiscSettings( void )
  190. {
  191.     LONG err;
  192.  
  193.     if( MiscWD.Wnd )
  194.     {
  195.         ActivateWindow( MiscWD.Wnd );
  196.         return( TRUE );
  197.     }
  198.  
  199.         /* NewGadgets mit Werten belegen */
  200.  
  201.     MiscNewGadgets[ GD_MISC_ALTSPRUNGWEITE ].CurrentValue = altsprungweite;
  202.     MiscNewGadgets[ GD_MISC_SCROLLRAND ].CurrentValue = realscrollrand;
  203.     MiscNewGadgets[ GD_MISC_MAXUNDOLEVEL ].CurrentValue = UndoLevel;
  204.     MiscNewGadgets[ GD_MISC_MAXUNDOMEM ].CurrentValue = maxundomemsize;
  205.     MiscNewGadgets[ GD_MISC_CLIPBOARDUNIT ].CurrentValue = GetClipboardUnit();
  206.     MiscNewGadgets[ GD_MISC_PROGRAMPRIO ].CurrentValue = taskpri;
  207.     MiscNewGadgets[ GD_MISC_USEASL ].CurrentValue = UseAsl;
  208.     MiscNewGadgets[ GD_MISC_OVERWRITE ].CurrentValue = (mainflags&MF_OVERWRITE) ? TRUE : FALSE;
  209.     MiscNewGadgets[ GD_MISC_COMMANDSHELLWINDOW ].CurrentValue = (LONG) arexxcommandshellwindow;
  210.     MiscNewGadgets[ GD_MISC_COMMANDWINDOW ].CurrentValue = (LONG) arexxcommandwindow;
  211.     MiscNewGadgets[ GD_MISC_DISPLAY ].CurrentValue = (LONG) DisplayStrings;
  212.     MiscNewGadgets[ GD_MISC_SPACE ].CurrentValue = (LONG) SpaceStrings;
  213.     MiscNewGadgets[ GD_MISC_DISPLAY ].Max = 2;
  214.     MiscNewGadgets[ GD_MISC_SPACE ].Max = 3;
  215.     MiscNewGadgets[ GD_MISC_DISPLAY ].Min = AktuDD->DisplayForm - 1;
  216.  
  217.     if( AktuDD->DisplaySpaces <= 2 )
  218.         MiscNewGadgets[ GD_MISC_SPACE ].Min = AktuDD->DisplaySpaces;
  219.     else
  220.         MiscNewGadgets[ GD_MISC_SPACE ].Min = 3;
  221.  
  222.     if(err = NewOpenAWindow( &MiscWD, GetStr(MSG_WINDOWTITLE_MISC )))
  223.     {
  224.         MyRequest( MSG_INFO_GLOBAL_CANTOPENWINDOW, err );
  225.         return( FALSE );
  226.     }
  227.     else
  228.     {
  229.         MyAddSignal( 1L << MiscWD.Wnd->UserPort->mp_SigBit, &DoMiscWndMsg );
  230.     }
  231. }
  232.